<?php
/**
 * 转换个函数返回参数为标准格式
 * 标准状态码为：
 * 1	-	操作成功
 * 0	-	操作失败
 * 2	-	网络故障
 * 		-	其他	
 * @author kim007
 *
 */
class emayParseResult{
	
	/**
	 * 
	 * 指定一个 session key 并 进行登录操作
	 * 
	 * @param string $sessionKey 指定一个session key 
	 * @return int 操作结果状态码
	 * 
	 * 代码如:
	 * 
	 * $sessionKey = $client->generateKey(); //产生随机6位数 session key
	 * 
	 * if ($client->login($sessionKey)==0)
	 * {
	 * 	 //登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
	 * }else{
	 * 	 //登录失败处理
	 * }
	 * 返回值：
	 * 	0	注册成功
		10	客户端注册失败
		101	客户端网络故障
		305	服务器端返回错误，错误的返回值（返回值不是数字字符串）
		999	操作频繁
	 */
	static function loginSms($statusCode) {
		if ($statusCode!=null && $statusCode=="0"){
			//登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
			//echo "登录成功, session key:".$client->getSessionKey()."<br/>";
			$result['status'] = 1;
			$result['msg'] = '登陆成功';
			return $result;
		}else{
			if($statusCode==10){
				$result['status'] = 0;
				$result['msg'] = '登陆失败';
				return $result;
			}
			if($statusCode==101){
				$result['status'] = 2;
				$result['msg'] = '客户端网络故障';
				return $result;
			}
			if($statusCode==305){
				$result['status'] = 305;
				$result['msg'] = '服务器端返回错误，错误的返回值';
				return $result;
			}
			if($statusCode==999){
				$result['status'] = 999;
				$result['msg'] = '操作频繁';
				return $result;
			}
			
			$result['status'] = -1;
			$result['msg'] = '登陆失败，未知的返回状态（'.$statusCode.'）';
			return $result;
		}
	}
	
	
	
	/**	
	 * 	0	注销成功
		22	注销失败
		101	客户端网络故障
		305	服务器端返回错误，错误的返回值（返回值不是数字字符串）
		999	操作频繁
	 * @param unknown_type $statusCode
	 */
	static function logoutSms($statusCode) {
		if ($statusCode!=null && $statusCode=="0"){
			//登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
			//echo "登录成功, session key:".$client->getSessionKey()."<br/>";
			$result['status'] = 1;
			$result['msg'] = '注销成功';
			return $result;
		}else{
			if($statusCode==22){
				$result['status'] = 0;
				$result['msg'] = '注销失败';
				return $result;
			}
			if($statusCode==101){
				$result['status'] = 2;
				$result['msg'] = '客户端网络故障';
				return $result;
			}
			if($statusCode==305){
				$result['status'] = 305;
				$result['msg'] = '服务器端返回错误，错误的返回值';
				return $result;
			}
			if($statusCode==999){
				$result['status'] = 999;
				$result['msg'] = '操作频繁';
				return $result;
			}
			
			$result['status'] = -1;
			$result['msg'] = '注销失败，未知的返回状态（'.$statusCode.'）';
			return $result;
		}
	}
	
	
	/**
	 * 	0	短信发送成功
		17	发送信息失败
		18	发送定时信息失败
		101	客户端网络故障
		305	服务器端返回错误，错误的返回值（返回值不是数字字符串）
		307	目标电话号码不符合规则，电话号码必须是以0、1开头
		997	平台返回找不到超时的短信，该信息是否成功无法确定
		998	由于客户端网络问题导致信息发送超时，该信息是否成功下发无法确定

	 */
	static function sendSms($statusCode) {
		if ($statusCode!=null && $statusCode=="0"){
			//登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
			//echo "登录成功, session key:".$client->getSessionKey()."<br/>";
			$result['status'] = 1;
			$result['msg'] = '短信发送成功';
			return $result;
		}else{
			if($statusCode==17){
				$result['status'] = 0;
				$result['msg'] = '发送信息失败';
				return $result;
			}
			if($statusCode==18){
				$result['status'] = 0;
				$result['msg'] = '发送定时信息失败';
				return $result;
			}
			if($statusCode==101){
				$result['status'] = 2;
				$result['msg'] = '客户端网络故障';
				return $result;
			}
			if($statusCode==305){
				$result['status'] = 305;
				$result['msg'] = '服务器端返回错误，错误的返回值';
				return $result;
			}
			if($statusCode==307){
				$result['status'] = 307;
				$result['msg'] = '目标电话号码不符合规则，电话号码必须是以0、1开头';
				return $result;
			}
			if($statusCode==997){
				$result['status'] = 997;
				$result['msg'] = '平台返回找不到超时的短信，该信息是否成功无法确定';
				return $result;
			}
			if($statusCode==998){
				$result['status'] = 998;
				$result['msg'] = '由于客户端网络问题导致信息发送超时，该信息是否成功下发无法确定';
				return $result;
			}
			
			$result['status'] = -1;
			$result['msg'] = '注销失败，未知的返回状态（'.$statusCode.'）';
			return $result;
		}
	}
	
	
	/**
	 * 	0	密码修改成功
		-1	新密码长度不能大于6
		101	客户端网络故障
		305	服务器端返回错误数据，返回的数据必须是数字
		308	新密码不是数字，必须是数字
		999	操作频繁
	 */
	
	static function updatePasswordSms($statusCode) {
		if ($statusCode!=null && $statusCode=="0"){
			//登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
			//echo "登录成功, session key:".$client->getSessionKey()."<br/>";
			$result['status'] = 1;
			$result['msg'] = '密码修改成功';
			return $result;
		}else{
			if($statusCode==-1){
				$result['status'] = 0;
				$result['msg'] = '新密码长度不能大于6';
				return $result;
			}
			if($statusCode==308){
				$result['status'] = 0;
				$result['msg'] = '新密码不是数字，必须是数字';
				return $result;
			}
			if($statusCode==101){
				$result['status'] = 2;
				$result['msg'] = '客户端网络故障';
				return $result;
			}
			if($statusCode==305){
				$result['status'] = 305;
				$result['msg'] = '服务器端返回错误，错误的返回值';
				return $result;
			}
			
			if($statusCode==999){
				$result['status'] = 999;
				$result['msg'] = '操作频繁';
				return $result;
			}
			
			$result['status'] = -1;
			$result['msg'] = '密码修改失败，未知的返回状态（'.$statusCode.'）';
			return $result;
		}
	}
	
	
	/** 转换sendMMS获得的结果
	 * 	OK	成功	如果彩信发送成功则成功，如果发送失败则请参考其他错误码
		FileExist	文件已存在	出现此问题请联系亿美客服人员
		FileNotExist	文件不存在	获取彩信资源时失败，联系亿美客服人员
		UserNamePasswordError	用户名、密码错误	请核实用户名、密码，与亿美销售人员联系
		UserNameExist	用户名已存在	创建用户时可能会出现更换其它用户名
		ZeroBlance	余额为零	1、查看发送类型2、查看余额
		UserCreateError	用户创建错误	创建用户时可能会出现，记录返回值与技术部门联系。
		MMSSaveError	彩信保存成功	发送彩信时可能会出现，记录返回值与技术部门联系。
		ALLNotWhiteNumberList	所有号码不在白名单中	发送的手机号不在白名单中，此用户的策略需要过滤白名单
		ALLNoBlackNumberList	所有号码在黑名单中	发送的手机号码全部为黑名单，此用户信息需要过滤黑名单
		BlackDictionarykInContent	内容中存在黑字典	发送的彩信内容中包函黑字典，此用户信息需要过滤黑字典
		BlackDictionarykParameterError	黑字典参数错误	黑字典参数错误，1、请检查黑字典服务，2、内容不能为空。
		BillingError	计费失败	计费失败原因请记录返回值后与亿美客服联系。
		FilterError	系统过滤器加载失败	系统启动过滤器异常，记录返回值后与亿美客服联系
		StrategyError	策略加载失败	系统启动策略异常，记录返回值后与亿美客服联系
		StrategyNotExist	策略不存在	记录返回值后与亿美客服联系
		StoreNumberError	存储手机号码失败	系统存储异常，记录返回值后与亿美客服联系
		StoreContentError	存储彩信资源文件失败	系统存储异常，记录返回值后与亿美客服联系
		System	系统其它异常	系统所有未分类别的异常，记录返回值后与亿美客服联系
		
		返回实例：
			OK:模块[黑字典]执行时间[0]文件名[content.txt]中不存在黑字典
			模块[黑名单]执行时间[0]号码全部通过黑名单
			模块[计费]执行时间[15.625]用户［XE-yitb］于［2011-5-9 11:47:00］发送彩信［小心意：金成光 送您的礼物！！］计［2］条,彩信类型［2］
			模块[存储]执行时间[15.625]存储号码文件成功，获取文件ID：154b5624-7162-4977-b6d0-5864c908ea76存储彩信文件成功，获取文件ID：bd8aab2e-90c9-4b1a-ae2f-b6ce4002d134
			模块[审核]执行时间[0]数据加入审核成功
			模块[等待发送]执行时间[15.625]彩信保存成功,7755159
	 */
	function sendMms($return){
		//echo "starting parse mms return result!";
		$temp_ = explode(':',$return);
		$statusCode = $temp_[0];
		$return1 = str_replace($statusCode.":", "", $return);//状态码
		$data = explode('模块[',$return1);
		if(empty($data)){
			$result['status'] = -1;
			$result['msg'] = '返回结果为空';
			$result['returndata'] = $return;
			return $result;
		}
		foreach($data as $vo){
			$temp_ = explode(']',$vo);
			$flag = $temp_[0]."]"; 
			$data_['模块['.$flag] = str_replace($flag, "", $vo);
		}
		
		$mms_code = emayParseResult::$MMS_CODE;
		
		$desc = $mms_code[$statusCode];
		if(empty($desc))$desc = "未知状态码（".$statusCode."）";
		$result['status'] = 0;
		$result['msg'] = $desc;
		$result['returndata'] = $return;
		
		if($statusCode=="ALLNotWhiteNumberList"){
			$result['status'] = 0;
			$result['msg'] = "手机号码在黑名单中，不能发送。".$data_["模块[白名单]"];
		}
		if($statusCode=="ALLNoBlackNumberList"){
			$result['status'] = 0;
			$result['msg'] = "手机号码在黑名单中，不能发送。".$data_["模块[黑名单]"];
		}
		if($statusCode=="BlackDictionarykInContent"){
			$result['status'] = 0;
			$result['msg'] = "发送内容存在敏感文字，不能发送。".$data_["模块[黑字典]"];
		}
		if($statusCode=='OK'){
			$result['status'] = 1;
			$result['msg'] = "发送成功";
		}
		//dump($result);
		//echo "ending parse mms return result!";
		return $result;
	}
	
	static $MMS_CODE = array(
								"OK"=>'成功 如果彩信发送成功则成功，如果发送失败则请参考其他错误码',
								"FileExist"=>'文件已存在	出现此问题请联系亿美客服人员',
								"FileNotExist"=>'文件不存在	获取彩信资源时失败，联系亿美客服人员',
								"UserNamePasswordError"=>'用户名、密码错误	请核实用户名、密码，与亿美销售人员联系',
								"UserNameExist"=>'用户名已存在	创建用户时可能会出现更换其它用户名',
								"ZeroBlance"=>'余额为零	1、查看发送类型2、查看余额',
								"UserCreateError"=>'用户创建错误	创建用户时可能会出现，记录返回值与技术部门联系。',
								"MMSSaveError"=>'彩信保存成功	发送彩信时可能会出现，记录返回值与技术部门联系。',
								"ALLNotWhiteNumberList"=>'所有号码不在白名单中	发送的手机号不在白名单中，此用户的策略需要过滤白名单',
								"ALLNoBlackNumberList"=>'所有号码在黑名单中	发送的手机号码全部为黑名单，此用户信息需要过滤黑名单',
								"BlackDictionarykInContent"=>'内容中存在黑字典	发送的彩信内容中包函黑字典，此用户信息需要过滤黑字典',
								"BlackDictionarykParameterError"=>'黑字典参数错误	黑字典参数错误，1、请检查黑字典服务，2、内容不能为空。',
								"BillingError"=>'计费失败	计费失败原因请记录返回值后与亿美客服联系。',
								"FilterError"=>'系统过滤器加载失败	系统启动过滤器异常，记录返回值后与亿美客服联系',
								"StrategyError"=>'策略加载失败	系统启动策略异常，记录返回值后与亿美客服联系',
								"StrategyNotExist"=>'策略不存在	记录返回值后与亿美客服联系',
								"StoreNumberError"=>'存储手机号码失败	系统存储异常，记录返回值后与亿美客服联系',
								"StoreContentError"=>'存储彩信资源文件失败	系统存储异常，记录返回值后与亿美客服联系',
								"System"=>'系统其它异常	系统所有未分类别的异常，记录返回值后与亿美客服联系',
						);
	
						
	/**
	 * 返回值为数值型，分为两种情况：
		（1）返回值为-1，说明查询失败，请检查用户名、密码或者账户类型是否填写正确；
		（2）返回值大于等于0，说明查询成功，返回的数字即为账户余额。
	 * @param unknown_type $balance
	 */
	static function getBalanceMms($balance){
		if($balance==null){
			$result['status'] = -1;
			$result['msg'] = '查询MMS余额出错，服务器未返回正确结果';
			$result['returndata'] = $balance;
		}else{
			if($balance==-1){
				$result['status'] = 0;
				$result['msg'] = '查询MMS余额出错';
				$result['returndata'] = "返回值为-1，说明查询失败，请检查用户名、密码或者账户类型是否填写正确";
			}else{
				$result['status'] = 1;
				$result['msg'] = '查询MMS余额成功';
				$result['balance'] = $balance;
				$result['returndata'] = "账户余额:".$balance;
			}
		}
		return $result;
	}
	
	
	/**
	 * 返回值为数值型，分为两种情况：
		（1）返回值为-1，说明查询失败，请检查用户名、密码或者账户类型是否填写正确；
		（2）返回值大于等于0，说明查询成功，返回的数字即为账户余额。
	 * @param unknown_type $balance
	 */
	static function getBalanceSms($balance){
		if($balance==null){
			$result['status'] = -1;
			$result['msg'] = '查询SMS余额出错，服务器未返回正确结果';
			$result['returndata'] = $balance;
		}else{
			if($balance==-1){
				$result['status'] = 0;
				$result['msg'] = '查询SMS余额出错';
				$result['returndata'] = "返回值为-1，说明查询失败，请检查用户名、密码或者账户类型是否填写正确";
			}else{
				$result['status'] = 1;
				$result['msg'] = '查询SMS余额成功';
				$result['balance'] = $balance;
				$result['returndata'] = "账户余额:".$balance;
			}
		}
		return $result;
	}
	
	
	
}
?>